const cloud = require('wx-server-sdk');

exports.main = async (event, context) => {
  cloud.init({
    env:'cloud1-0gn0f58bf9089386'
  });
  const db = cloud.database();

  try {
    // 从云开发数据库中查询等待发送的消息列表
    const messages = await db
      .collection('subscribe')
      // 查询条件这里做了简化，只查找了状态为未发送的消息
      // 在真正的生产环境，可以根据开课日期等条件筛选应该发送哪些消息
      .get();

    // 循环消息列表
    const sendPromises = messages.data.map(async message => {
      try {
        // 发送订阅消息
        
        await cloud.openapi.subscribeMessage.send({
          touser: message.targetid,
          page: 'pages/message/message',
          data: {
            "phrase1": {
              "value": '新消息提醒'
            },
            "time7": {
              "value": message.time
            },
          },
          templateId: 't2r26N3WvkUIKJ3eMI1cps-1oYn1-Sh5Y0Be89rOftM',
        });
        // 发送成功后将消息的状态改为已发送
        return db
          .collection('subscribe')
          .doc(message._id)
          .remove()
      } catch (e) {
        return e;
      }
    });

    return Promise.all(sendPromises);
  } catch (err) {
    console.log(err);
    return err;
  }
};